In a computer system, a memory management unit (MMU) is generally used to translate central processing unit (CPU)-visible virtual addresses to physical addresses. In some instances, an Input/output memory management unit (IOMMU) is used to translate device-visible virtual addresses to physical addresses for direct memory access (DMA) capable devices. An IOMMU generally includes a page table translator that implements specific translation architecture in hardware for translations from virtual addresses to physical addresses, e.g., ARM® SMMU v1/v2, Intel® IOMMU v1/v2, AMD® I/O virtualization technology v1/v2. In most cases, the implemented architecture matches the CPU MMU architecture implemented on the same silicon.
Generally, IOMMU implementations are tightly coupled to the CPU MMU architecture. Therefore, in most instances, as different architectures evolve (e.g., new versions, change from 32-bit to 64-bit, etc.), IOMMU implementations need to be updated to keep up with the evolving MMU architecture.